package com.yidu.SystemManagement.controller;

import com.yidu.GlobalManagement.log.OperLog;
import com.yidu.GlobalManagement.log.util.OperationType;
import com.yidu.SystemManagement.entity.User;
import com.yidu.SystemManagement.service.UserService;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author 任俊杰
 * @version 1.0
 * @date 2022/12/5
 */
@RestController
public class UserController {
    @Resource
    private UserService userService;

    /**
     * 新增用户
     * @param user 用户对象
     * @return  i 受影响的行数
     */
    @RequestMapping("addUser")
    public int addUser(User user){
        System.out.println("进来了新增的方法");
        int i =userService .addUser(user);
        if(i>0){
            System.out.println("新增成功");
        }else{
            System.out.println("新增失败");
        }
        return i;
    }

    /**
     * 删除用户
     * @param userid 用户id
     * @return int i 受影响的行数
     */
    @RequestMapping("deleteUser")
    public int deleteUser(Integer userid){
        System.out.println("进来了删除的方法");
        int i = userService.deleteUser(userid);
        if(i>0){
            System.out.println("删除成功");
        }else{
            System.out.println("删除失败");
        }
        return i;
    }

    /**
     * 修改用户
     * @param user 用户对象
     * @return int i 受影响的行数
     */
    @RequestMapping("updateUser")
    public int updateUser(User user){
        System.out.println("进来了修改的方法");
        int i = userService.updateUser(user);
        if(i>0){
            System.out.println("修改成功");
        }else{
            System.out.println("修改失败");
        }
        return i;
    }

    /**
     * 查询用户
     * @param page 当前页
     * @param limit 每页显示数
     * @param user 用户对象
     * @return
     */
    @RequestMapping("selectUser")
    @OperLog(message = "用户管理的查询",operation = OperationType.QUERY)
    public Map selectUser(int page, int limit, User user){
        System.out.println("进来了查询的方法");
        //查询加分页
        List<User> sysUsers = userService.selectUser(page, limit, user);

        //查行数
        int count =userService.selectUserCount(user);
        Map map=new HashMap();
        map.put("code",0);
        map.put("msg","");
        map.put("count",count);
        map.put("data",sysUsers);
        return map;
    }




    /**
     * 验证登录的方法
     * @param session session对象
     * @param model 试图对象
     * @param user 用户对象
     * @param fundId 基金id
     * @param cashId 现金id
     * @return login 登录界面
     * @author 任俊杰
     */
    @RequestMapping("checkLogin")
    public String checkLogin(HttpSession session, Model model, User user,String fundId,String cashId){
        System.out.println("进来了验证登录的方法");
        int count = userService.checkLogin(user);
        if(count==1){
            //这一步操作就是将用户名 set到session里
            session.setAttribute("userName",user.getUserName());
            //这一步操作就是将基金id set到session里，但是查模块还是按照userName查，基金id只是传到session里，业务需求要用就去session拿
            session.setAttribute("fundId",fundId);
            //把基金信息表里的账户id set到session里
            session.setAttribute("cashId",cashId);

            System.out.println("userName="+ user.getUserName());
            System.out.println("fundId="+fundId);
            System.out.println("cashId="+cashId);

            return user.getUserName();
        }else{
            return "login";
        }
    }
}
